package drds.server.server;

import drds.server.route.Route;

/**
 * 
 */
public interface ISession {

	/**
	 * 取得源端连接
	 */
	SessionContext getSessionContext();

	/**
	 * 取得当前目标端数量
	 */
	int getNodeSize();

	/**
	 * 开启一个会话执行
	 */
	void execute(Route route, int type);

	/**
	 * 提交一个会话执行
	 */
	void commit();

	/**
	 * 回滚一个会话执行
	 */
	void rollBack();

	/**
	 * 取消一个正在执行中的会话
	 * 
	 * @param sponsor
	 *            如果发起者为null，则表示由自己发起。
	 */
	void cancel(SessionContext sessionContext);

	/**
	 * 终止会话，必须在关闭源端连接后执行该方法。
	 */
	void terminate();

}